#include <iostream>

using namespace std;
// 100.相同的树
// 给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(): val(0),left(nullptr),right(nullptr) {}
    TreeNode(int x): val(x),left(nullptr),right(nullptr) {}
};

class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p == nullptr && q == nullptr)
            return true;
        if((p != nullptr && q == nullptr) || (p == nullptr && q != nullptr))
            return false;

        if(p->val == q->val) {
            bool left = isSameTree(p->left, q->left);
            bool right = isSameTree(p->right, q->right);
            return left && right;
        } else
            return false;
    }
};

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
